# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python
from cerbero.tools.libtool import LibtoolLibrary

class Recipe(custom.GStreamer):
    name = 'gst-plugins-bad-1.0'
    btype = BuildType.MESON
    tarball_checksum = '22139de35626ada6090bdfa3423b27b7fc15a0198331d25c95e6b12cb1072b05'
    # Explicitly enable plugins that we provide dependencies for to ensure that
    # we error out if they weren't found.
    meson_options = {# enabled plugins
                     'assrender': 'enabled',
                     'bz2': 'enabled',
                     'closedcaption': 'enabled',
                     'decklink': 'enabled',
                     'dtls': 'enabled',
                     'dts': 'enabled',
                     'hls': 'enabled',
                     'kate': 'enabled',
                     'libmms': 'enabled',
                     'openh264': 'enabled',
                     'openjpeg': 'enabled',
                     'opus': 'enabled',
                     'rtmp': 'enabled',
                     'sbc': 'enabled',
                     'sctp': 'enabled',
                     'soundtouch': 'enabled',
                     'srt': 'enabled',
                     'spandsp': 'enabled',
                     'srtp': 'enabled',
                     'resindvd': 'enabled',
                     'rsvg': 'enabled',
                     'voaacenc': 'enabled',
                     'vulkan': 'enabled',
                     'webrtc': 'enabled',
                     'webrtcdsp': 'enabled',
                     'zbar': 'enabled',
                     # disabled plugins
                     'curl': 'disabled',
                     'curl-ssh2': 'disabled',
                     'dc1394': 'disabled',
                     'directfb': 'disabled',
                     'faac': 'disabled',
                     'faad': 'disabled',
                     'fbdev': 'disabled',
                     'festival': 'disabled',
                     'flite': 'disabled',
                     'gme': 'disabled',
                     'gsm': 'disabled',
                     'libde265': 'disabled',
                     'lv2': 'disabled',
                     'modplug': 'disabled',
                     'mpeg2enc': 'disabled',
                     'mplex': 'disabled',
                     'musepack': 'disabled',
                     'neon': 'disabled',
                     'ofa': 'disabled',
                     'openal': 'disabled',
                     'opencv': 'disabled',
                     'sndfile': 'disabled',
                     'teletext': 'disabled',
                     'vdpau': 'disabled',
                     'voamrwbenc': 'disabled',
                     'wildmidi': 'disabled',
                    }
    deps = ['gstreamer-1.0', 'gst-plugins-base-1.0', 'bzip2', 'libass',
            'libkate', 'zlib', 'openh264', 'opus', 'nettle', 'librtmp',
            'libsrtp', 'libdca', 'libmms', 'libdvdnav', 'libnice',
            'soundtouch', 'vo-aacenc', 'librsvg', 'openjpeg', 'openssl',
            'pango', 'spandsp', 'webrtc-audio-processing', 'sbc', 'ladspa',
            'srt', 'libusrsctp', 'zbar']
    use_system_libs = True

    files_lang = ['gst-plugins-bad-1.0']

    files_libs = ['libgstcodecparsers-1.0', 'libgstmpegts-1.0', 'libgsturidownloader-1.0',
                  'libgstbasecamerabinsrc-1.0', 'libgstphotography-1.0',
                  'libgstinsertbin-1.0', 'libgstadaptivedemux-1.0',
                  'libgstplayer-1.0', 'libgstbadaudio-1.0',
                  'libgstisoff-1.0', 'libgstsctp-1.0', 'libgstwebrtc-1.0', 'libgstvulkan-1.0']

    files_plugins_devel = [
        'include/gstreamer-1.0/gst/mpegts',
        'include/gstreamer-1.0/gst/player',
        'include/gstreamer-1.0/gst/base',
        'include/gstreamer-1.0/gst/audio',
        'include/gstreamer-1.0/gst/basecamerabinsrc',
        'include/gstreamer-1.0/gst/codecparsers',
        'include/gstreamer-1.0/gst/insertbin',
        'include/gstreamer-1.0/gst/interfaces',
        'include/gstreamer-1.0/gst/isoff',
        'include/gstreamer-1.0/gst/sctp',
        'include/gstreamer-1.0/gst/webrtc',
        'include/gstreamer-1.0/gst/vulkan',
        'lib/pkgconfig/gstreamer-plugins-bad-1.0.pc',
        'lib/pkgconfig/gstreamer-mpegts-1.0.pc',
        'lib/pkgconfig/gstreamer-player-1.0.pc',
        'lib/pkgconfig/gstreamer-bad-audio-1.0.pc',
        'lib/pkgconfig/gstreamer-codecparsers-1.0.pc',
        'lib/pkgconfig/gstreamer-insertbin-1.0.pc',
        'lib/pkgconfig/gstreamer-sctp-1.0.pc',
        'lib/pkgconfig/gstreamer-webrtc-1.0.pc',
        'lib/pkgconfig/gstreamer-vulkan-1.0.pc',
    ]

    files_plugins_effects = [
             'lib/gstreamer-1.0/libgstaccurip%(mext)s',
             'lib/gstreamer-1.0/libgstaiff%(mext)s',
             'lib/gstreamer-1.0/libgstaudiobuffersplit%(mext)s',
             'lib/gstreamer-1.0/libgstaudiofxbad%(mext)s',
             'lib/gstreamer-1.0/libgstaudiolatency%(mext)s',
             'lib/gstreamer-1.0/libgstaudiomixmatrix%(mext)s',
             'lib/gstreamer-1.0/libgstautoconvert%(mext)s',
             'lib/gstreamer-1.0/libgstbayer%(mext)s',
             'lib/gstreamer-1.0/libgstcoloreffects%(mext)s',
             'lib/gstreamer-1.0/libgstclosedcaption%(mext)s',
             'lib/gstreamer-1.0/libgstdebugutilsbad%(mext)s',
             'lib/gstreamer-1.0/libgstfieldanalysis%(mext)s',
             'lib/gstreamer-1.0/libgstfreeverb%(mext)s',
             'lib/gstreamer-1.0/libgstfrei0r%(mext)s',
             'lib/gstreamer-1.0/libgstgaudieffects%(mext)s',
             'lib/gstreamer-1.0/libgstgeometrictransform%(mext)s',
             'lib/gstreamer-1.0/libgstinter%(mext)s',
             'lib/gstreamer-1.0/libgstinterlace%(mext)s',
             'lib/gstreamer-1.0/libgstivtc%(mext)s',
             'lib/gstreamer-1.0/libgstlegacyrawparse%(mext)s',
             'lib/gstreamer-1.0/libgstproxy%(mext)s',
             'lib/gstreamer-1.0/libgstremovesilence%(mext)s',
             'lib/gstreamer-1.0/libgstsegmentclip%(mext)s',
             'lib/gstreamer-1.0/libgstsmooth%(mext)s',
             'lib/gstreamer-1.0/libgstspeed%(mext)s',
             'lib/gstreamer-1.0/libgstsoundtouch%(mext)s',
             'lib/gstreamer-1.0/libgsttimecode%(mext)s',
             'lib/gstreamer-1.0/libgstvideofiltersbad%(mext)s',
             'lib/gstreamer-1.0/libgstvideoframe_audiolevel%(mext)s',
             'lib/gstreamer-1.0/libgstwebrtcdsp%(mext)s',
             'lib/gstreamer-1.0/libgstladspa%(mext)s',
    ]

    files_plugins_effects_devel = [
             'lib/gstreamer-1.0/libgstaccurip.a', 'lib/gstreamer-1.0/libgstaccurip.la',
             'lib/gstreamer-1.0/libgstaiff.a', 'lib/gstreamer-1.0/libgstaiff.la',
             'lib/gstreamer-1.0/libgstaudiobuffersplit.a', 'lib/gstreamer-1.0/libgstaudiobuffersplit.la',
             'lib/gstreamer-1.0/libgstaudiofxbad.a', 'lib/gstreamer-1.0/libgstaudiofxbad.la',
             'lib/gstreamer-1.0/libgstaudiolatency.a', 'lib/gstreamer-1.0/libgstaudiolatency.la',
             'lib/gstreamer-1.0/libgstaudiomixmatrix.a', 'lib/gstreamer-1.0/libgstaudiomixmatrix.la',
             'lib/gstreamer-1.0/libgstautoconvert.a', 'lib/gstreamer-1.0/libgstautoconvert.la',
             'lib/gstreamer-1.0/libgstbayer.a', 'lib/gstreamer-1.0/libgstbayer.la',
             'lib/gstreamer-1.0/libgstcoloreffects.a', 'lib/gstreamer-1.0/libgstcoloreffects.la',
             'lib/gstreamer-1.0/libgstclosedcaption.a', 'lib/gstreamer-1.0/libgstclosedcaption.la',
             'lib/gstreamer-1.0/libgstdebugutilsbad.a', 'lib/gstreamer-1.0/libgstdebugutilsbad.la',
             'lib/gstreamer-1.0/libgstfieldanalysis.a', 'lib/gstreamer-1.0/libgstfieldanalysis.la',
             'lib/gstreamer-1.0/libgstfreeverb.a', 'lib/gstreamer-1.0/libgstfreeverb.la',
             'lib/gstreamer-1.0/libgstfrei0r.a', 'lib/gstreamer-1.0/libgstfrei0r.la',
             'lib/gstreamer-1.0/libgstgaudieffects.a', 'lib/gstreamer-1.0/libgstgaudieffects.la',
             'lib/gstreamer-1.0/libgstgeometrictransform.a', 'lib/gstreamer-1.0/libgstgeometrictransform.la',
             'lib/gstreamer-1.0/libgstinter.a', 'lib/gstreamer-1.0/libgstinter.la',
             'lib/gstreamer-1.0/libgstinterlace.a', 'lib/gstreamer-1.0/libgstinterlace.la',
             'lib/gstreamer-1.0/libgstivtc.a', 'lib/gstreamer-1.0/libgstivtc.la',
             'lib/gstreamer-1.0/libgstlegacyrawparse.a', 'lib/gstreamer-1.0/libgstlegacyrawparse.la',
             'lib/gstreamer-1.0/libgstproxy.a', 'lib/gstreamer-1.0/libgstproxy.la',
             'lib/gstreamer-1.0/libgstremovesilence.a', 'lib/gstreamer-1.0/libgstremovesilence.la',
             'lib/gstreamer-1.0/libgstsegmentclip.a', 'lib/gstreamer-1.0/libgstsegmentclip.la',
             'lib/gstreamer-1.0/libgstsmooth.a', 'lib/gstreamer-1.0/libgstsmooth.la',
             'lib/gstreamer-1.0/libgstspeed.a', 'lib/gstreamer-1.0/libgstspeed.la',
             'lib/gstreamer-1.0/libgstsoundtouch.a', 'lib/gstreamer-1.0/libgstsoundtouch.la',
             'lib/gstreamer-1.0/libgsttimecode.a', 'lib/gstreamer-1.0/libgsttimecode.la',
             'lib/gstreamer-1.0/libgstvideofiltersbad.a', 'lib/gstreamer-1.0/libgstvideofiltersbad.la',
             'lib/gstreamer-1.0/libgstvideoframe_audiolevel.a', 'lib/gstreamer-1.0/libgstvideoframe_audiolevel.la',
             'lib/gstreamer-1.0/libgstwebrtcdsp.a', 'lib/gstreamer-1.0/libgstwebrtcdsp.la',
             'lib/gstreamer-1.0/libgstladspa.a', 'lib/gstreamer-1.0/libgstladspa.la',
    ]

    files_plugins_codecs = [
             'lib/gstreamer-1.0/libgstadpcmdec%(mext)s',
             'lib/gstreamer-1.0/libgstadpcmenc%(mext)s',
             'lib/gstreamer-1.0/libgstbz2%(mext)s',
             'lib/gstreamer-1.0/libgstdashdemux%(mext)s',
             'lib/gstreamer-1.0/libgstdvbsuboverlay%(mext)s',
             'lib/gstreamer-1.0/libgstdvdspu%(mext)s',
             'lib/gstreamer-1.0/libgsthls%(mext)s',
             'lib/gstreamer-1.0/libgstid3tag%(mext)s',
             'lib/gstreamer-1.0/libgstkate%(mext)s',
             'lib/gstreamer-1.0/libgstmidi%(mext)s',
             'lib/gstreamer-1.0/libgstmxf%(mext)s',
             'lib/gstreamer-1.0/libgstopenh264%(mext)s',
             'lib/gstreamer-1.0/libgstopusparse%(mext)s',
             'lib/gstreamer-1.0/libgstpcapparse%(mext)s',
             'lib/gstreamer-1.0/libgstpnm%(mext)s',
             'lib/gstreamer-1.0/libgstrfbsrc%(mext)s',
             'lib/gstreamer-1.0/libgstsiren%(mext)s',
             'lib/gstreamer-1.0/libgstsmoothstreaming%(mext)s',
             'lib/gstreamer-1.0/libgstsubenc%(mext)s',
             'lib/gstreamer-1.0/libgstvideoparsersbad%(mext)s',
             'lib/gstreamer-1.0/libgsty4mdec%(mext)s',
             'lib/gstreamer-1.0/libgstjpegformat%(mext)s',
             'lib/gstreamer-1.0/libgstgdp%(mext)s',
             'lib/gstreamer-1.0/libgstrsvg%(mext)s',
             'lib/gstreamer-1.0/libgstopenjpeg%(mext)s',
             'lib/gstreamer-1.0/libgstspandsp%(mext)s',
             'lib/gstreamer-1.0/libgstsbc%(mext)s',
             'lib/gstreamer-1.0/libgstzbar%(mext)s',
    ]

    files_plugins_codecs_devel = [
             'lib/gstreamer-1.0/libgstadpcmdec.a', 'lib/gstreamer-1.0/libgstadpcmdec.la',
             'lib/gstreamer-1.0/libgstadpcmenc.a', 'lib/gstreamer-1.0/libgstadpcmenc.la',
             'lib/gstreamer-1.0/libgstbz2.a', 'lib/gstreamer-1.0/libgstbz2.la',
             'lib/gstreamer-1.0/libgstdashdemux.a', 'lib/gstreamer-1.0/libgstdashdemux.la',
             'lib/gstreamer-1.0/libgstdvbsuboverlay.a', 'lib/gstreamer-1.0/libgstdvbsuboverlay.la',
             'lib/gstreamer-1.0/libgstdvdspu.a', 'lib/gstreamer-1.0/libgstdvdspu.la',
             'lib/gstreamer-1.0/libgsthls.a', 'lib/gstreamer-1.0/libgsthls.la',
             'lib/gstreamer-1.0/libgstid3tag.a', 'lib/gstreamer-1.0/libgstid3tag.la',
             'lib/gstreamer-1.0/libgstkate.a', 'lib/gstreamer-1.0/libgstkate.la',
             'lib/gstreamer-1.0/libgstmidi.a', 'lib/gstreamer-1.0/libgstmidi.la',
             'lib/gstreamer-1.0/libgstmxf.a', 'lib/gstreamer-1.0/libgstmxf.la',
             'lib/gstreamer-1.0/libgstopenh264.a', 'lib/gstreamer-1.0/libgstopenh264.la',
             'lib/gstreamer-1.0/libgstopusparse.a', 'lib/gstreamer-1.0/libgstopusparse.la',
             'lib/gstreamer-1.0/libgstpcapparse.a', 'lib/gstreamer-1.0/libgstpcapparse.la',
             'lib/gstreamer-1.0/libgstpnm.a', 'lib/gstreamer-1.0/libgstpnm.la',
             'lib/gstreamer-1.0/libgstrfbsrc.a', 'lib/gstreamer-1.0/libgstrfbsrc.la',
             'lib/gstreamer-1.0/libgstsiren.a', 'lib/gstreamer-1.0/libgstsiren.la',
             'lib/gstreamer-1.0/libgstsmoothstreaming.a', 'lib/gstreamer-1.0/libgstsmoothstreaming.la',
             'lib/gstreamer-1.0/libgstsubenc.a', 'lib/gstreamer-1.0/libgstsubenc.la',
             'lib/gstreamer-1.0/libgstvideoparsersbad.a', 'lib/gstreamer-1.0/libgstvideoparsersbad.la',
             'lib/gstreamer-1.0/libgsty4mdec.a', 'lib/gstreamer-1.0/libgsty4mdec.la',
             'lib/gstreamer-1.0/libgstjpegformat.a', 'lib/gstreamer-1.0/libgstjpegformat.la',
             'lib/gstreamer-1.0/libgstgdp.a', 'lib/gstreamer-1.0/libgstgdp.la',
             'lib/gstreamer-1.0/libgstrsvg.a', 'lib/gstreamer-1.0/libgstrsvg.la',
             'lib/gstreamer-1.0/libgstopenjpeg.a', 'lib/gstreamer-1.0/libgstopenjpeg.la',
             'lib/gstreamer-1.0/libgstspandsp.a', 'lib/gstreamer-1.0/libgstspandsp.la',
             'lib/gstreamer-1.0/libgstsbc.a', 'lib/gstreamer-1.0/libgstsbc.la',
             'lib/gstreamer-1.0/libgstzbar.a', 'lib/gstreamer-1.0/libgstzbar.la',
    ]

    platform_files_plugins_codecs = {
        Platform.ANDROID: [
             'lib/gstreamer-1.0/libgstandroidmedia%(mext)s',
            ]
    }

    platform_files_plugins_codecs_devel = {
        Platform.ANDROID: [
             'lib/gstreamer-1.0/libgstandroidmedia.a', 'lib/gstreamer-1.0/libgstandroidmedia.la',
            ]
    }

    files_plugins_codecs_gpl = [
             'lib/gstreamer-1.0/libgstassrender%(mext)s',
    ]

    files_plugins_codecs_gpl_devel = [
             'lib/gstreamer-1.0/libgstassrender.a', 'lib/gstreamer-1.0/libgstassrender.la',
    ]

    files_plugins_codecs_restricted = [
             'lib/gstreamer-1.0/libgstasfmux%(mext)s',
             'lib/gstreamer-1.0/libgstdtsdec%(mext)s',
             'lib/gstreamer-1.0/libgstmpegpsdemux%(mext)s',
             'lib/gstreamer-1.0/libgstmpegpsmux%(mext)s',
             'lib/gstreamer-1.0/libgstmpegtsdemux%(mext)s',
             'lib/gstreamer-1.0/libgstmpegtsmux%(mext)s',
             'lib/gstreamer-1.0/libgstvoaacenc%(mext)s'
    ]

    files_plugins_codecs_restricted_devel = [
             'lib/gstreamer-1.0/libgstasfmux.a', 'lib/gstreamer-1.0/libgstasfmux.la',
             'lib/gstreamer-1.0/libgstdtsdec.a', 'lib/gstreamer-1.0/libgstdtsdec.la',
             'lib/gstreamer-1.0/libgstmpegpsdemux.a', 'lib/gstreamer-1.0/libgstmpegpsdemux.la',
             'lib/gstreamer-1.0/libgstmpegpsmux.a', 'lib/gstreamer-1.0/libgstmpegpsmux.la',
             'lib/gstreamer-1.0/libgstmpegtsdemux.a', 'lib/gstreamer-1.0/libgstmpegtsdemux.la',
             'lib/gstreamer-1.0/libgstmpegtsmux.a', 'lib/gstreamer-1.0/libgstmpegtsmux.la',
             'lib/gstreamer-1.0/libgstvoaacenc.a', 'lib/gstreamer-1.0/libgstvoaacenc.la',
    ]

    files_plugins_dvd = [
             'lib/gstreamer-1.0/libgstresindvd%(mext)s',
    ]

    files_plugins_dvd_devel = [
             'lib/gstreamer-1.0/libgstresindvd.a', 'lib/gstreamer-1.0/libgstresindvd.la',
    ]

    files_plugins_net = [
             'lib/gstreamer-1.0/libgstdtls%(mext)s',
             'lib/gstreamer-1.0/libgstnetsim%(mext)s',
             'lib/gstreamer-1.0/libgstsctp%(mext)s',
             'lib/gstreamer-1.0/libgstsdpelem%(mext)s',
             'lib/gstreamer-1.0/libgstsrtp%(mext)s',
             'lib/gstreamer-1.0/libgstsrt%(mext)s',
             'lib/gstreamer-1.0/libgstwebrtc%(mext)s',
    ]

    files_plugins_net_devel = [
             'lib/gstreamer-1.0/libgstdtls.a', 'lib/gstreamer-1.0/libgstdtls.la',
             'lib/gstreamer-1.0/libgstnetsim.a', 'lib/gstreamer-1.0/libgstnetsim.la',
             'lib/gstreamer-1.0/libgstsctp.a', 'lib/gstreamer-1.0/libgstsctp.la',
             'lib/gstreamer-1.0/libgstsdpelem.a', 'lib/gstreamer-1.0/libgstsdpelem.la',
             'lib/gstreamer-1.0/libgstsrtp.a', 'lib/gstreamer-1.0/libgstsrtp.la',
             'lib/gstreamer-1.0/libgstsrt.a', 'lib/gstreamer-1.0/libgstsrt.la',
             'lib/gstreamer-1.0/libgstwebrtc.a', 'lib/gstreamer-1.0/libgstwebrtc.la',
    ]

    files_plugins_net_restricted = [
             'lib/gstreamer-1.0/libgstmms%(mext)s',
             'lib/gstreamer-1.0/libgstrtmp%(mext)s',
    ]

    files_plugins_net_restricted_devel = [
             'lib/gstreamer-1.0/libgstmms.a', 'lib/gstreamer-1.0/libgstmms.la',
             'lib/gstreamer-1.0/libgstrtmp.a', 'lib/gstreamer-1.0/libgstrtmp.la',
    ]

    files_plugins_capture = [
             'lib/gstreamer-1.0/libgstcamerabin%(mext)s'
    ]

    files_plugins_capture_devel = [
             'lib/gstreamer-1.0/libgstcamerabin.a', 'lib/gstreamer-1.0/libgstcamerabin.la',
    ]

    platform_files_plugins_capture = {
        Platform.LINUX: [
             'lib/gstreamer-1.0/libgstdvb%(mext)s',
            ],
        Platform.WINDOWS: [
             'lib/gstreamer-1.0/libgstwinscreencap%(mext)s',
             'lib/gstreamer-1.0/libgstdirectsoundsrc%(mext)s',
             'lib/gstreamer-1.0/libgstwinks%(mext)s',
            ]
    }

    platform_files_plugins_capture_devel = {
        Platform.LINUX: [
             'lib/gstreamer-1.0/libgstdvb.a', 'lib/gstreamer-1.0/libgstdvb.la',
            ],
        Platform.WINDOWS: [
             'lib/gstreamer-1.0/libgstwinscreencap.a', 'lib/gstreamer-1.0/libgstwinscreencap.la',
             'lib/gstreamer-1.0/libgstdirectsoundsrc.a', 'lib/gstreamer-1.0/libgstdirectsoundsrc.la',
             'lib/gstreamer-1.0/libgstwinks.a', 'lib/gstreamer-1.0/libgstwinks.la',
            ]
    }

    files_plugins_sys = [
        'lib/gstreamer-1.0/libgstvulkan%(mext)s',
    ]

    files_plugins_sys_devel = [
        'lib/gstreamer-1.0/libgstvulkan.a', 'lib/gstreamer-1.0/libgstvulkan.la',
    ]

    files_plugins_vis = [
             'lib/gstreamer-1.0/libgstaudiovisualizers%(mext)s',
    ]

    files_plugins_vis_devel = [
             'lib/gstreamer-1.0/libgstaudiovisualizers.a', 'lib/gstreamer-1.0/libgstaudiovisualizers.la',
    ]

    platform_files_plugins_sys = {
        Platform.LINUX: [
             'lib/gstreamer-1.0/libgstshm%(mext)s',
             'lib/gstreamer-1.0/libgstdecklink%(mext)s',
             'lib/gstreamer-1.0/libgstipcpipeline%(mext)s',
            ],
        Platform.WINDOWS: [
             'lib/gstreamer-1.0/libgstd3d%(mext)s',
             'lib/gstreamer-1.0/libgstd3d11%(mext)s',
             'lib/gstreamer-1.0/libgstwasapi%(mext)s',
             'lib/gstreamer-1.0/libgstdecklink%(mext)s',
            ],
        Platform.DARWIN: [
             'lib/gstreamer-1.0/libgstapplemedia%(mext)s',
             'lib/gstreamer-1.0/libgstshm%(mext)s',
             'lib/gstreamer-1.0/libgstdecklink%(mext)s',
             'lib/gstreamer-1.0/libgstipcpipeline%(mext)s',
            ],
        Platform.IOS: [
             'lib/gstreamer-1.0/libgstapplemedia%(mext)s',
             'lib/gstreamer-1.0/libgstshm%(mext)s',
             'lib/gstreamer-1.0/libgstipcpipeline%(mext)s',
            ],
        Platform.ANDROID: [
             'lib/gstreamer-1.0/libgstopensles%(mext)s',
             'lib/gstreamer-1.0/libgstipcpipeline%(mext)s',
            ]
    }

    platform_files_plugins_sys_devel = {
        Platform.LINUX: [
             'lib/gstreamer-1.0/libgstshm.a', 'lib/gstreamer-1.0/libgstshm.la',
             'lib/gstreamer-1.0/libgstdecklink.a', 'lib/gstreamer-1.0/libgstdecklink.la',
             'lib/gstreamer-1.0/libgstipcpipeline.a', 'lib/gstreamer-1.0/libgstipcpipeline.la',
            ],
        Platform.WINDOWS: [
             'lib/gstreamer-1.0/libgstd3d.a', 'lib/gstreamer-1.0/libgstd3d.la',
             'lib/gstreamer-1.0/libgstd3d11.a', 'lib/gstreamer-1.0/libgstd3d11.la',
             'lib/gstreamer-1.0/libgstwasapi.a', 'lib/gstreamer-1.0/libgstwasapi.la',
             'lib/gstreamer-1.0/libgstdecklink.a', 'lib/gstreamer-1.0/libgstdecklink.la',
            ],
        Platform.DARWIN: [
             'lib/gstreamer-1.0/libgstapplemedia.a', 'lib/gstreamer-1.0/libgstapplemedia.la',
             'lib/gstreamer-1.0/libgstshm.a', 'lib/gstreamer-1.0/libgstshm.la',
             'lib/gstreamer-1.0/libgstdecklink.a', 'lib/gstreamer-1.0/libgstdecklink.la',
             'lib/gstreamer-1.0/libgstipcpipeline.a', 'lib/gstreamer-1.0/libgstipcpipeline.la',
            ],
        Platform.IOS: [
             'lib/gstreamer-1.0/libgstapplemedia.a', 'lib/gstreamer-1.0/libgstapplemedia.la',
             'lib/gstreamer-1.0/libgstshm.a', 'lib/gstreamer-1.0/libgstshm.la',
             'lib/gstreamer-1.0/libgstipcpipeline.a', 'lib/gstreamer-1.0/libgstipcpipeline.la',
            ],
        Platform.ANDROID: [
             'lib/gstreamer-1.0/libgstopensles.a', 'lib/gstreamer-1.0/libgstopensles.la',
             'lib/gstreamer-1.0/libgstipcpipeline.a', 'lib/gstreamer-1.0/libgstipcpipeline.la',
            ]
    }

    files_typelibs = [
        'GstInsertBin-1.0',
        'GstMpegts-1.0',
        'GstPlayer-1.0'
        ]

    platform_files_codecs_devel = {
        Platform.ANDROID: [
              'share/gst-android/ndk-build',
            ]
    }

    def prepare(self):
        # Disable Cocoa NSApp integration since we enable the Cocoa MainLoop
        # integration in the GLib recipe
        if self.config.target_platform in (Platform.DARWIN, Platform.IOS):
            self.append_env('CFLAGS', '-DGSTREAMER_GLIB_COCOA_NSAPPLICATION=1')
            self.append_env('OBJCFLAGS', '-DGSTREAMER_GLIB_COCOA_NSAPPLICATION=1')

        if self.using_msvc():
            # plugin is C++, library is Autotools
            self.disable_plugin('soundtouch', 'effects', dep='soundtouch')
            # Plugin is C++ and hence webrtc-audio-processing must also be
            # built with MSVC, it uses Meson but it doesn't build:
            # https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/issues/2
            self.disable_plugin('webrtcdsp', 'effects', dep='webrtc-audio-processing')
            # librsvg pulls in gdk-pixbuf, which must be built with MSVC
            self.disable_plugin('rsvg', 'codecs', dep='librsvg')

        # Enable hardware codecs if variants are enabled
        self.enable_plugin('nvenc', 'codecs', 'nvcodec', option='nvenc')
        self.enable_plugin('nvdec', 'codecs', 'nvcodec', option='nvdec')
        self.enable_plugin('msdk', 'codecs', 'intelmsdk', option='msdk')

        if self.config.target_platform == Platform.WINDOWS:
            self.meson_options['wasapi'] = 'enabled'
            self.meson_options['d3dvideosink'] = 'enabled'
            self.meson_options['d3d11'] = 'enabled'
            self.meson_options['directsound'] = 'enabled'
            self.meson_options['winks'] = 'enabled'
            self.meson_options['winscreencap'] = 'enabled'
            if not self.using_msvc():
                # FIXME: Temporal fix to pass the CI's with the new toolchain
                self.append_env('CFLAGS', '-Wno-error=switch')

        if self.config.target_platform in (Platform.LINUX, Platform.DARWIN, Platform.IOS):
            self.meson_options['shm'] = 'enabled'

        if self.config.target_platform in (Platform.DARWIN, Platform.IOS):
            self.meson_options['applemedia'] = 'enabled'
            self.deps += ['moltenvk']

        if self.config.target_platform not in (Platform.DARWIN, Platform.IOS) or \
                (self.config.target_platform == Platform.IOS and self.config.target_arch != Architecture.ARM64):
            self.disable_plugin('vulkan', 'sys', library_name='vulkan')

        if self.config.target_platform in (Platform.ANDROID, Platform.IOS):
            self.disable_plugin('resindvd', 'dvd', dep='libdvdnav')

        if self.config.variants.nodebug:
            self.append_env('CFLAGS', '-DGST_LEVEL_MAX=GST_LEVEL_FIXME')

    def post_install(self):
        LibtoolLibrary('gstphotography-1.0', None, None, None, self.config.libdir,
                self.config.target_platform, deps=['gstreamer-1.0']).save()
        LibtoolLibrary('gsturidownloader-1.0', None, None, None, self.config.libdir,
                self.config.target_platform, deps=['gstreamer-1.0', 'gstbase-1.0']).save()
        LibtoolLibrary('gstadaptivedemux-1.0', None, None, None, self.config.libdir,
                self.config.target_platform, deps=['gstreamer-1.0', 'gsturidownloader-1.0', 'gstapp-1.0', 'gstbase-1.0']).save()
        LibtoolLibrary('gstbasecamerabinsrc-1.0', None, None, None, self.config.libdir,
                self.config.target_platform, deps=['gstreamer-1.0', 'gstapp-1.0', 'gstbase-1.0']).save()
        LibtoolLibrary('gstisoff-1.0', None, None, None, self.config.libdir,
                self.config.target_platform, deps=['gstreamer-1.0']).save()
        super().post_install()
